﻿/******************************************************************************
 * 
 * Announce: CSharpKit, Basic algorithms, components and definitions.
 *           Copyright (C) ShenYongchen.
 *           All rights reserved.
 *   Author: 申永辰.郑州 (shenyczz@163.com)
 *  WebSite: http://github.com/shenyczz/CSharpKit
 *
 * THIS CODE IS LICENSED UNDER THE MIT LICENSE (MIT).
 * THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 
 * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
 * IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
 * PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
 * 
******************************************************************************/

using System;
using System.Numerics;

namespace CSharpKit.Numerics.LinearAlgebra.Factorization
{
    /// <summary>
    /// 它封装了QR分解的功能，修改了Gram-Schmidt正交化。<para/>
    /// A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.<para/>
    /// Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix.<para/>
    /// </summary>
    /// <remarks>
    /// The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
    /// </remarks>
    /// <typeparam name="T">Supported data types are double, single, <see cref="Complex"/></typeparam>
    public abstract class GramSchmidt<T> : QR<T>
        where T : struct, IEquatable<T>, IFormattable
    {
        protected GramSchmidt(Matrix<T> q, Matrix<T> rFull)
            : base(q, rFull, QRMethod.Full) { }

        //}}@@@
    }



}

